perm filename VRNLEL.SAI[PIX,HPM] blob sn#458169 filedate 1979-07-13 generic text, type C, neo UTF8
COMMENT ⊗   VALID 00002 PAGES
C REC  PAGE   DESCRIPTION
C00001 00001
C00002 00002	BEGIN "VRNLEL"
C00006 ENDMK
C⊗;
BEGIN "VRNLEL"
REQUIRE "VIXHDR.SAI[VIS,HPM]" SOURCE_FILE;

INTEGER FOO,OCH; BOOLEAN LINES;
INTEGER I,J,K,NFX,NFY,NF,VRN,COUNT,BRCHAR,EOF;

PRINT("Number of pages across:"); NFX←CVD(INCHWL);
PRINT("Number of pages vertically:"); NFY←CVD(INCHWL);
PRINT("Outlines?"); LINES←(INCHWL LAND '137)="Y";
NF←NFX*NFY;

   BEGIN "BIT FILE"
   INTEGER ROW;
   STRING ARRAY SF[1:NF];
   INTEGER ARRAY PIC[1:NF,0:10], PCH[1:NF];
   INTEGER ARRAY SCNLIN[0:2,-1:117];

   FOR I←1 STEP 1 UNTIL NF DO
      BEGIN  DO PRINT("BIT FILE ",I,":") UNTIL PFLDIM(SF[I]←INCHWL)>0;
             PCH[I]←OPNPFL(SF[I],PIC[I,0]);  END;

   VRN←GETCHAN; EOF←TRUE;
   DO OPEN(VRN,"VRN",'117,2,2,COUNT,BRCHAR,EOF) UNTIL ¬EOF ∨ (0 LAND CALL(2,"SLEEP"));

   FOR ROW←1 STEP 1 UNTIL NFY DO
      BEGIN "ROWS"
      INTEGER MAXL,NFL,NFH;
      NFL←(ROW-1)*NFX+1; NFH←NFL+NFX-1;
      MAXL←PIC[NFL,PCLN];
      FOR I←NFL+1 STEP 1 UNTIL NFH DO MAXL←MAXL MAX PIC[I,PCLN];
      IF ROW=NFY THEN MAXL←MAXL+400;
      FOR I←0 STEP 1 UNTIL MAXL-1 DO
	  BEGIN
	  INTEGER PT,RH,MI,MIP,LO,HI,R3;
          R3←ROW MOD 3;
          FOR J←0 STEP 1 UNTIL 117 DO SCNLIN[R3,J]←-1;
          FOR K←NFL STEP 1 UNTIL NFH DO
             BEGIN
             SAFE INTEGER ARRAY SCNLI[0:PIC[K,LNWD]+3];
             IF I<PIC[K,PCLN] THEN
                  ARRYIN(PCH[K],SCNLI[0],PIC[K,LNWD]);
             IF LINES THEN
                BEGIN
                SCNLI[1]←SCNLI[1] LOR '400000000000;
                SCNLI[PIC[K,LNWD]-1]←SCNLI[PIC[K,LNWD]-1] LOR 
                   (1 LSH (PIC[K,LNWD]*36-PIC[K,LNBY]));
                END;
	     MI←(PIC[K,LNWD]-1)%2+1; MIP←(4224*(K-NFL+.5)/NFX)/36+.5;
             LO←(1-MI) MAX -MIP; HI←(PIC[K,LNWD]-1-MI) MIN (117-MIP);
	     FOR J←LO STEP 1 UNTIL HI DO
                SCNLIN[R3,J+MIP]←SCNLIN[R3,J+MIP] LOR SCNLI[J+MI];
             END;

          IF LINES ∧ (ROW=1∧I=0 ∨ ROW=NFY∧I=MAXL-400) THEN 
          FOR J←0 STEP 1 UNTIL 117 DO SCNLIN[R3,J]←-1;
          SCNLIN[R3,-1]←'100000000 LOR 118;
          
	  ARRYOUT(VRN,SCNLIN[R3,-1],119);
	  END;
      END "ROWS";
   END "BIT FILE";
   RELEASE(VRN);

END "VRNLEL";